Віртуальні функції, поліморфізм та пізнє зв’язування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2006
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
КН

Частина тексту файла

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра ІСМ  Звіт про виконання лабораторної роботи № 6 з курсу „Технології проектування програмних систем” на тему: «Віртуальні функції, поліморфізм та пізнє зв’язування» Львів-2006 Мета роботи: вивчення поліморфізму класів та механізму його підтримки за допомогою віртуальних функцій. Порядок роботи 1. Ознайомитися з теоретичним матеріалом про наслідування класів у Borland C++. 2. Проаналізувати результати роботи фрагментів програм у приведених прикладах наслідування класів. 3. Оголосити базовий клас з необхідними полями, конструкторами, деструктором, методами. Оголосити похідний клас. Програма та результати її виконання #include <vcl.h> #include <iostream.h> #include <conio.h> //Для функції gotoxy(); #include <stdlib.h> class point { protected: int x, y; // Координати символа. public: point(int xi = 0, int yi = 0); // Конструктор. int& givex(void); int& givey(void); virtual void show(void); virtual void move(int xn = 0, int yn = 0); private: virtual void hide(); }; point::point (int xi, int yi) { x = xi; y = yi; } // int& point::givex(void) { return x; } // Доступ до х. int& point::givey(void) { return y; } // Доступ до у. // Зобразити символ на екрані. void point::show(void) { gotoxy(x,y); cout << "*"; } // Забрати з екрану зображення символа. void point::hide(void) { gotoxy(x,y); cout << " "; } // Перемістити символ в нове місце экрана. void point::move (int xn, int yn) { hide(); x = xn; y = yn; show(); } class star: public point { protected: int rad; // Довжина променів зірки. int vis; // Видимість зірки на ерані public: // Конструктор класу STAR: star (int xi, int yi, int ri): point(xi,yi) { vis = 0; rad = ri; } ~star() // Деструктор класу STAR. { hide(); // Забрати з екрану зображення зірки. } virtual void show(); // Зобразити зірку на екрані дисплея. virtual void hide(); // Забрати з екрану зображення зірки // Перемістити зображення: virtual void move(int xn, int yn) { hide(); // Забрати з екрану старе зображення. // Змінити координати центру зірки: x = xn; y = yn; show(); // Вивести зображення в новому місці. } // Змінити розмір зображення плями: void vary(float dr) { float a; hide(); // Забрати з екрану старе зображення. // Вирахувати новий радіус: a = dr * rad; if (a <= 0) rad = 0; else rad = (int)a; show(); // Зобразити зірку на екрані. } int& giver(void) // Доступ до довжин променів. { return rad; } }; void star::show() // Зобразити зірку на екрані дисплея. { int i; // Якщо зірка не зображена на екрані: if (vis == 0) { // Зобразити зірку: gotoxy(x,y); cout << "*"; for (int i=1;i<=rad;i++) { gotoxy(x+i,y); cout << "*"; gotoxy(x-i,y); cout << "*"; gotoxy(x,y+i); cout << "*"; gotoxy(x,y-i); cout << "*"; } for (i=-rad;i<=rad;i++) { gotoxy(x+i,y+i); cout << "*"; gotoxy(x-i,y+i); cout << "*"; } vis = 1; } } void star::hide() // Забрати з екрану зображення зірки { int i; if (vis == 0) // нема що забирати. return; // Стерти з екрану зображення: gotoxy(x,y); cout << " "; for (int i=1;i<=rad;i++) { gotoxy(x+i,y); cout << " "; gotoxy(x-i,y); cout << " "; gotoxy(x,y+i); cout << " "; gotoxy(x,y-i); cout << " "; } for (i=-rad;i<=rad;i++) {gotoxy(x+i,y+i); cout << " "; gotoxy(x-i,y+i); cout << " "; } vis = 0; } //--------------------------------------------------------------------------- int x,y,z; int main() { randomize(); x=random(6); randomize(); star A(7,7,x); A.show(); getch (); A.hide(); randomize; x=random(4); star B(41,12,x); B.show(); getch (); } Рис.1. Вигляд вікна програми після виконання Висновки Під час виконання лабораторної ро...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини